#pragma once
#include <string>
#include <list>


#ifdef VERSIONXML_EXPORTS
#define SHAREDVERSIONXML_EXPORTS _declspec(dllexport)
#else
#define SHAREDVERSIONXML_EXPORTS _declspec(dllimport)

#endif // _DEBUG

class SHAREDVERSIONXML_EXPORTS VersionXml
{
public:
    bool Load(const std::string& path);
    bool Create(const std::string& path);
    bool CreateXml();
    bool GetValue(const std::string& key, std::string & value);
    bool SetValue(const std::string& key, const int64_t& value);
    bool AddXml(const std::string& name, const std::string& path);
    bool ModPacket(const int64_t& packet);
    bool Save();
    int64_t GetPacket();
    bool GetStopList(std::list<std::string>& list);

    VersionXml();
    ~VersionXml();
private:
    struct VersionXmlImpl;
    VersionXmlImpl * m_impl{ nullptr };

    VersionXml(const VersionXml&) = delete;
    VersionXml& operator=(const VersionXml&) = delete;
};

